using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Credinka.Ayni.SEA.EN;
namespace Credinka.Ayni.SEA.AD
{
    public class adCargoPerfil : adGeneral
    {
        public adCargoPerfil(SqlConnection con)
        {
            conexion = con;
        }

        public List<enCargoPerfil> fListar(enCargoPerfil poenCargoPerfil)
        {
            List<enCargoPerfil> loenFormularioObjeto = null;
            enCargoPerfil oenCargoPerfil;
            SqlCommand cmd = new SqlCommand("sSEA_ConsultarCargoPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piNumeroPagina", SqlDbType.Int).Value = poenCargoPerfil.NumeroPagina;
            cmd.Parameters.Add("@piNumeroRegistros", SqlDbType.Int).Value = poenCargoPerfil.NumeroRegistros;
            cmd.Parameters.Add("@piIdCargo", SqlDbType.Int).Value = poenCargoPerfil.IdCargo;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_TotalRegistros = drd.GetOrdinal("TotalRegistros");
                int pos_RowNumber = drd.GetOrdinal("RowNumber");
                int pos_IdCargoPerfil = drd.GetOrdinal("iIdCargoPerfil");
                int pos_IdPerfil = drd.GetOrdinal("iIdPerfil");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                loenFormularioObjeto = new List<enCargoPerfil>();

                while (drd.Read())
                {
                    oenCargoPerfil = new enCargoPerfil();
                    oenCargoPerfil.TotalRegistros = drd.GetInt32(pos_TotalRegistros);
                    oenCargoPerfil.RowNumber = drd.GetInt32(pos_RowNumber);
                    oenCargoPerfil.IdPerfil = (drd.IsDBNull(pos_IdPerfil) ? 0 : drd.GetInt32(pos_IdPerfil));
                    oenCargoPerfil.IdCargoPerfil = (drd.IsDBNull(pos_IdCargoPerfil) ? 0 : drd.GetInt32(pos_IdCargoPerfil));
                    oenCargoPerfil.entPerfil = new enPerfil();
                    oenCargoPerfil.entPerfil.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
                    oenCargoPerfil.entPerfil.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    loenFormularioObjeto.Add(oenCargoPerfil);
                }
            }
            return (loenFormularioObjeto);
        }

        public List<enCargoPerfil> fListarCargoPerfil(int pIdCargo)
        {
            List<enCargoPerfil> loenFormularioObjeto = null;
            enCargoPerfil oenCargoPerfil;
            SqlCommand cmd = new SqlCommand("sSEA_ListarCargoPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piIdCargo", SqlDbType.Int).Value = pIdCargo;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdPerfil = drd.GetOrdinal("iIdPerfil");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                loenFormularioObjeto = new List<enCargoPerfil>();

                while (drd.Read())
                {
                    oenCargoPerfil = new enCargoPerfil();
                    oenCargoPerfil.IdPerfil = (drd.IsDBNull(pos_IdPerfil) ? 0 : drd.GetInt32(pos_IdPerfil));
                    oenCargoPerfil.entPerfil = new enPerfil();
                    oenCargoPerfil.entPerfil.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
                    oenCargoPerfil.entPerfil.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    loenFormularioObjeto.Add(oenCargoPerfil);
                }
            }
            return (loenFormularioObjeto);
        }

        public List<enCargoPerfil> fListarCargo()
        {
            List<enCargoPerfil> loenCargoPerfil = null;
            SqlCommand cmd = new SqlCommand("sSEA_ListarCargoPorPerfilExistente", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
            if (drd != null)
            {
                int pos_CodigoElemento = drd.GetOrdinal("iCodigoElemento");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                loenCargoPerfil = new List<enCargoPerfil>();
                enCargoPerfil oenCargoPerfil;

                while (drd.Read())
                {
                    oenCargoPerfil = new enCargoPerfil();
                    oenCargoPerfil.IdCargo = (drd.IsDBNull(pos_CodigoElemento) ? 0 : drd.GetInt32(pos_CodigoElemento));
                    oenCargoPerfil.Nombre = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    loenCargoPerfil.Add(oenCargoPerfil);
                }
            }
            return (loenCargoPerfil);
        }

        public List<enCargoPerfil> fListarPerfil(int IdCargo)
        {
            List<enCargoPerfil> loenCargoPerfil = null;
            SqlCommand cmd = new SqlCommand("sSEA_ListarPerfilPorCargo", conexion);
            cmd.Parameters.Add("@piiCodigoPerfilUsuario", SqlDbType.Int).Value = Convert.ToInt32(IdCargo);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
            if (drd != null)
            {
                int pos_CodigoElemento = drd.GetOrdinal("IdPerfil");
                int pos_Descripcion = drd.GetOrdinal("Nombre");
                int pos_CodigoCargo = drd.GetOrdinal("IdCargo");
                loenCargoPerfil = new List<enCargoPerfil>();
                enCargoPerfil oenCargoPerfil;

                while (drd.Read())
                {
                    oenCargoPerfil = new enCargoPerfil();
                    oenCargoPerfil.IdPerfil = (drd.IsDBNull(pos_CodigoElemento) ? 0 : drd.GetInt32(pos_CodigoElemento));
                    oenCargoPerfil.IdCargo = (drd.IsDBNull(pos_CodigoCargo) ? 0 : drd.GetInt32(pos_CodigoCargo));
                    oenCargoPerfil.Nombre = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    loenCargoPerfil.Add(oenCargoPerfil);
                }
            }
            return (loenCargoPerfil);
        }

        public int fRegistrar(enCargoPerfil poenCargoPerfil)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_RegistrarCargoPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdCargo", SqlDbType.Int).Value = poenCargoPerfil.IdCargo;
            cmd.Parameters.Add("@piiIdPerfil", SqlDbType.Int).Value = poenCargoPerfil.IdPerfil;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenCargoPerfil.CodigoEstado;
            cmd.Parameters.Add("@pvAudNombreUsuarioCreacion", SqlDbType.VarChar).Value = poenCargoPerfil.AudNombreUsuarioCreacion;
            cmd.Parameters.Add("@vAudIPCreacion", SqlDbType.VarChar).Value = poenCargoPerfil.AudIPCreacion;
            cmd.Parameters.Add("@vAudMacCreacion", SqlDbType.VarChar).Value = poenCargoPerfil.AudMacCreacion;
            N = Convert.ToInt32(cmd.ExecuteScalar());
            return N;
        }

        public int fModificar(enCargoPerfil poenCargoPerfil)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_ModificarCargoPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdCargo", SqlDbType.Int).Value = poenCargoPerfil.IdCargo;
            cmd.Parameters.Add("@piiIdPerfil", SqlDbType.Int).Value = poenCargoPerfil.IdPerfil;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenCargoPerfil.CodigoEstado;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenCargoPerfil.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenCargoPerfil.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenCargoPerfil.AudMacModificacion;
            N = Convert.ToInt32(cmd.ExecuteNonQuery());
            return (N);
        }

        public int fEliminar(enCargoPerfil poenCargoPerfil)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_EliminarCargoPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piIdCargoPerfil", SqlDbType.Int).Value = poenCargoPerfil.IdCargoPerfil;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenCargoPerfil.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenCargoPerfil.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenCargoPerfil.AudMacModificacion;
            N = cmd.ExecuteNonQuery();
            return (N);
        }

        public int fContar()
        {
            int totalCargoPerfil;
            SqlCommand cmd = new SqlCommand("sSEA_ContarCargoPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            totalCargoPerfil = (int)cmd.ExecuteScalar();
            return (totalCargoPerfil);
        }
    }
}
